curl --request POST \
--url https://api.evermind.ai/api/v2/memory/edit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"user_id": "user-1",
"operations": [
{
"action": "add",
"type": "explicit_info",
"reason": "Stated in session-1",
"data": {
"category": "hobby",
"description": "Enjoys hiking in the mountains"
}
}
]
}
'import requests
url = "https://api.evermind.ai/api/v2/memory/edit"
payload = {
"user_id": "user-1",
"operations": [
{
"action": "add",
"type": "explicit_info",
"reason": "Stated in session-1",
"data": {
"category": "hobby",
"description": "Enjoys hiking in the mountains"
}
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
user_id: 'user-1',
operations: [
{
action: 'add',
type: 'explicit_info',
reason: 'Stated in session-1',
data: {category: 'hobby', description: 'Enjoys hiking in the mountains'}
}
]
})
};
fetch('https://api.evermind.ai/api/v2/memory/edit', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.evermind.ai/api/v2/memory/edit",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'user_id' => 'user-1',
'operations' => [
[
'action' => 'add',
'type' => 'explicit_info',
'reason' => 'Stated in session-1',
'data' => [
'category' => 'hobby',
'description' => 'Enjoys hiking in the mountains'
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.evermind.ai/api/v2/memory/edit"
payload := strings.NewReader("{\n \"user_id\": \"user-1\",\n \"operations\": [\n {\n \"action\": \"add\",\n \"type\": \"explicit_info\",\n \"reason\": \"Stated in session-1\",\n \"data\": {\n \"category\": \"hobby\",\n \"description\": \"Enjoys hiking in the mountains\"\n }\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.evermind.ai/api/v2/memory/edit")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"user_id\": \"user-1\",\n \"operations\": [\n {\n \"action\": \"add\",\n \"type\": \"explicit_info\",\n \"reason\": \"Stated in session-1\",\n \"data\": {\n \"category\": \"hobby\",\n \"description\": \"Enjoys hiking in the mountains\"\n }\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.evermind.ai/api/v2/memory/edit")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"user_id\": \"user-1\",\n \"operations\": [\n {\n \"action\": \"add\",\n \"type\": \"explicit_info\",\n \"reason\": \"Stated in session-1\",\n \"data\": {\n \"category\": \"hobby\",\n \"description\": \"Enjoys hiking in the mountains\"\n }\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"request_id": "<string>",
"data": {
"user_id": "<string>",
"version": 123,
"applied": 123,
"results": [
{
"op_index": 123,
"action": "<string>",
"type": "<string>",
"status": "applied",
"item_id": "<string>",
"new_item_id": "<string>",
"error": "<string>"
}
],
"profile": {}
}
}{}{}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}{}{}Edit profile items [Cloud-only]
Apply 1–50 edits to one user’s profile in a single call.
Each operation carries an action (add, update or delete), a type (explicit_info or implicit_traits), the item data, and an optional reason.
Profile is the only memory type this endpoint edits — memory_type is pinned to “profile”; every other type is produced by extraction. Operations are reported individually in the response, so some can be rejected while others apply.
curl --request POST \
--url https://api.evermind.ai/api/v2/memory/edit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"user_id": "user-1",
"operations": [
{
"action": "add",
"type": "explicit_info",
"reason": "Stated in session-1",
"data": {
"category": "hobby",
"description": "Enjoys hiking in the mountains"
}
}
]
}
'import requests
url = "https://api.evermind.ai/api/v2/memory/edit"
payload = {
"user_id": "user-1",
"operations": [
{
"action": "add",
"type": "explicit_info",
"reason": "Stated in session-1",
"data": {
"category": "hobby",
"description": "Enjoys hiking in the mountains"
}
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
user_id: 'user-1',
operations: [
{
action: 'add',
type: 'explicit_info',
reason: 'Stated in session-1',
data: {category: 'hobby', description: 'Enjoys hiking in the mountains'}
}
]
})
};
fetch('https://api.evermind.ai/api/v2/memory/edit', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.evermind.ai/api/v2/memory/edit",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'user_id' => 'user-1',
'operations' => [
[
'action' => 'add',
'type' => 'explicit_info',
'reason' => 'Stated in session-1',
'data' => [
'category' => 'hobby',
'description' => 'Enjoys hiking in the mountains'
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.evermind.ai/api/v2/memory/edit"
payload := strings.NewReader("{\n \"user_id\": \"user-1\",\n \"operations\": [\n {\n \"action\": \"add\",\n \"type\": \"explicit_info\",\n \"reason\": \"Stated in session-1\",\n \"data\": {\n \"category\": \"hobby\",\n \"description\": \"Enjoys hiking in the mountains\"\n }\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.evermind.ai/api/v2/memory/edit")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"user_id\": \"user-1\",\n \"operations\": [\n {\n \"action\": \"add\",\n \"type\": \"explicit_info\",\n \"reason\": \"Stated in session-1\",\n \"data\": {\n \"category\": \"hobby\",\n \"description\": \"Enjoys hiking in the mountains\"\n }\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.evermind.ai/api/v2/memory/edit")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"user_id\": \"user-1\",\n \"operations\": [\n {\n \"action\": \"add\",\n \"type\": \"explicit_info\",\n \"reason\": \"Stated in session-1\",\n \"data\": {\n \"category\": \"hobby\",\n \"description\": \"Enjoys hiking in the mountains\"\n }\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"request_id": "<string>",
"data": {
"user_id": "<string>",
"version": 123,
"applied": 123,
"results": [
{
"op_index": 123,
"action": "<string>",
"type": "<string>",
"status": "applied",
"item_id": "<string>",
"new_item_id": "<string>",
"error": "<string>"
}
],
"profile": {}
}
}{}{}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}{}{}Authorizations
API key issued by EverOS, sent as Authorization: Bearer <api_key>.
Body
Bulk profile edit request [Cloud-only].
Carries 1–50 EditOperation items targeting a single user's profile.
memory_type is pinned to "profile"; source is server-set and
not accepted from the client.
The user whose profile is being edited.
11 to 50 edits applied in one call. "add" mints the item id and must not carry one; "update" and "delete" require an item_id whose prefix matches the item type ("ei_" for explicit_info, "it_" for implicit_traits). Each operation's outcome is reported separately, so one can be rejected while the rest apply.
1 - 50 elementsAdd a new profile item (item_id forbidden — the server mints it).
- AddOperation
- UpdateOperation
- DeleteOperation
Show child attributes
Show child attributes
Scope the profile lives in, defaulting to "default".
Second half of the scope, defaulting to "default".
Pinned to "profile" — this endpoint edits nothing else.
"profile"Was this page helpful?

